RS40B - uživatelský manuál


2.6.9 - Kontrola pohybu

Pro definování trajektorie pohybu neslouží pouze posloupnost bodů. Je možné definovat také trajektorii pro pohyb mezi jednotlivými body (po křivce nebo přímo), určení návaznosti jednotlivých trajektorií (zaoblení) a definování rychlosti pohybu. V této části si ukážeme různé způsoby pohybu (movej, movel a movec instrukce) a také na jejich parametr mDesc.

movej

Tato instrukce slouží pro pohyb z bodu do bodu, kde nezáleží na počátečním, ale na cílovém bodě. Střed nástroje následuje křivku definovanou systémem k optimalizaci rychlosti pohybu.

void movej(<joint jPosition>, <tool tTool>, <mdesc mDesc>)
void movej(<point pPosition>, <tool tTool>, <mdesc mDesc>)

movel

Tato instrukce pohybuje nástrojem v přímé linii mezi počátečním a koncovým bodem.

void movel(<point pPosition>, <tool tTool>, <mdesc mDesc>)

movec

Tato instrukce slouží pro kruhový pohyb. Střed nástroje se pohybuje skrz 3 definované body a jeho orientace je přepočítána mezi počátečním, středním a konečným bodem.

void movec(<point pPosition>, <tool tTool>, <mdesc mDesc>)

Pokud střední bod svírá s bodem předchozím nebo následujícím úhel 180° nebo větší je generována chyba. V tomto případě je třeba upravit tento bod tak aby úhel byl menší než 180°.

Pro pohyb po celé kružnici je potřeba dvou instrukcí movec:

movec(B, C, Tool, mDesc)
movec(D, A, Tool, mDesc)

Příklad

Typickým využitím může být zvednutí a přesunutí předmětu. Předmět je chycen na pozici pPick, poté je přemístěn (většinou po ose z) do bodu pDepart. Následně je přemístěn nad místo položení a poté je předmět položen.

Tento pohyb vykonají následující 3 řádky. Příkaz příkazy movel pohybují nástrojem v přímé rovině a příkaz movej (v tomto případě provede pohyb mezi body pDepart a pAppro) vykoná pohyb po křivce, ale vyšší rychlostí.

movel(pDepart, tTool, mDesc)
movej(pAppro, tTool, mDesc)
movel(pPlace, tTool, mDesc)

Zaoblení

V některých případech není nutné aby nástroj dosáhl všech bodů mezi počátečním a cílovým bodem. To lze řešit zaoblením, které zvíší rychlost pohybu, protože se nemusí zastavovat na každém bodě zvlášť.
Pomocí typu mDesc lze nastavit, zda je zaoblení aktivované a jak velké bude zaoblení.

Příklad

Předchozí příklad si pomocí zaoblení upravíme tak, aby rameno nemuselo zastavovat v bodech pDepart a pAppro.

mDesc.blend = joint//nastavuje zaoblování
mDesc.leave = 50
mDesc.reach = 200
movel(pDepart, tTool, mDesc)
mDesc.leave = 200
mDesc.reach = 50
movej(pAppro, tTool, mDesc)
mDesc.blend = OFF//ruší zaoblování
movel(pPlace, tTool, mDesc)

Zaoblení jsme dosáhly změnou parametrů typu mDesc. Parametr blend, určuje zda bude zaoblení aktivní, parametry leave a reach určují velikost zaoblení.

Zrušení zaoblení

Instrukce waitEndMove() zajistí zrušení zaoblení právě prováděného pohybu bez ohledu na nastavení mDesc. Tedy čeká až na dokončení prováděného pohybu.

mDesc.blend = joint//nastavuje zaoblování
mDesc.leave = 10
mDesc.reach = 10
movej(pA, tTool, mDesc)
movej(pB, tTool, mDesc)
waitEndMove()//dojede až do bodu pB
movej(pC, tTool, mDesc)
movej(pD, tTool, mDesc)

Typ mDesc

Typ mDesc slouží, jak jsme si ukázaly již dříve, k nastavování parametrů pro rychlost, zrychlení a zaoblení. Jedná se o strukturované pole, které má následující parametry. Ke každému parametru lze přistoupit pomocí tečky.

Parametr Význam
num accel Maximální přípustné zrychlení v procentech.
num vel Maximální přípustná rychlost kloubu v procentech.
num decel Maximální přípustné zpomalené v procentech.
num tvel Maximální přípustná rychlost středu nástroje v mm/s nebo v inchech/s.
num rvel Maximální přípustná rychlost rotace středu nástroje ve stupních za sekundu.
blend blend Volba zaoblení. off - žádné zaoblení, joint - zaoblování
num leave Vzdálenost mezi cílovým bodem, ve kterém začíná zaoblování a dalším bodem, v milimetrech nebo palcích.
num reach Vzdálenost mezi cílovým bodem, ve kterém končí zaoblování a dalším bodem, v milimetrech nebo palcích.

Defaultně je mDesc nastaven na { 100, 100, 100, 9999, 9999, off, 50, 50}

Pohybové instrukce

Pohyb po křivce

Syntaxe
void movej(<joint jPosition>, <tool tTool>, <mdesc mDesc>)
void movej(<point pPosition>, <tool tTool>, <mdesc mDesc>)

Pohyb nástroje tTool po křivce do bodu jPosition nebo pPosition s parametry mDesc.



Pohyb po přímce

Syntaxe
void movel(<point pPosition>, <tool tTool>, <mdesc mDesc>)

Pohyb nástroje tTool přímou linií do bodu pPosition s parametry mDesc.



Pohyb po kružnici

Syntaxe
void movec(<point pIntermediate>, <point pTarget>, <tool tTool>, <mdesc mDesc>)

Pohyb nástroje tTool po kružnici. Pohyb začíná v místě předchozího pohybu, končí v bodě pTarget a prochází bodem pIntermediate.



Zastavení pohybu

Syntaxe
void stopMove()

Zastaví pohyb ramene na jeho trajektorii. Pohyb může být znovu obnoven instrukcí restartMove().



Zastavení všech pohybů

Syntaxe
void resetMotion()
void resetMotion(<joint jStartingPoint>)

Zastaví pohyb ramene na jeho trajektorii a zruší všechny naplánované pohyby. Naprogramovaný pohyb bude obnoven, pokud bude rameno pozastaveno instrukcí stopMove(). Pokud je definován bod jStartingPoint, další pohyb může být započat z této pozice.



Obnovení pohybu

Syntaxe
void restartMove()

Obnoví naprogramovaný pohyb, který byl pozastaven instrukcí stopMove(). Pokud nebyl předchozí pohyb pozastaven instrukcí stopMove(), nemá tato instrukce žádnou funkci.



Zrušení zaoblení

Syntaxe
void waitEndMove()

Zruší zaoblení pohybu a čeká dokud není dokončen právě prováděný pohyb. Tato instrukce nestabilizuje rameno v jeho cílové pozici, to lze provést instrukcí isSettled().



Kontrola pohybu

Syntaxe
bool isEmpty()

Vrací true pokud byly vykonány všechny pohybové instrukce, jinak vrací false.



Kontrola stabilizace

Syntaxe
bool isSettled()

Vrací true pokud je robot zastaven nebo false pokud není pozice stabilní.
Pozice se považována za stabilní, pokud odchylka každého kloubu je menší než 1%.



Propojení pohybu

Syntaxe
void autoConnectMove(<bool bActive>)
bool autoConnectMove()

Ve vzdáleném módu je propojení pohybu automatické pokud je rameno velmi blízko k jeho trajektorii (vzdálenost je menší než je maximální povolená chyba). Pokud je paže příliš daleko od své dráhy, propojení pohybu je automatické nebo manuální v závislosti na režimu definovaném instrukcí autoConnectMove : automaticky, pokud bActive je true, v režimu manuálního ovládání, pokud bActive je false. Pokud je instrukce volána bez parametru, autoConnectMove vrátí aktuální propojení pohybu.
Výchozí nastavení je manuální ovládání.



Rychlost aktuálního pohybu

Syntaxe
num getSpeed(< tool tTool >)

Instrukce vrací rychlost právě prováděného pohybu v kartézských souřadnicích.



Síla kloubu

Syntaxe
num getJointForce(< num& nForce >)

Tato instrukce vrátí aktuální moment síly, kterým kloub působí (v N.m pro otočnou osu) nebo sílu (N pro lineární osu), vypočtené z výkonu motorů.